package com.singfan.common.db.config;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 数据库表的信息
 * Author: HanSongHe
 * Date: 15-7-14 上午11:38
 */
public class Table {
    private int id;
    private String name;
    private Map<Integer, List<String>> versionDbsMap = new HashMap<>();
    private Map<Integer, Integer> versionTablesMap = new HashMap<>();
    private int newestVersion = 0;

    public Table(int id, String name, Map<Integer, List<String>> versionDbsMap, Map<Integer, Integer> versionTablesMap){
        this.id = id;
        this.name = name;
        this.versionDbsMap = versionDbsMap;
        this.versionTablesMap = versionTablesMap;

        if(versionDbsMap != null && !versionDbsMap.isEmpty()){
            Set<Integer> versionSet = versionDbsMap.keySet();
            for(Integer version : versionSet){
                if(version > newestVersion){
                    newestVersion = version;
                }
            }
        }
    }

    /**
     * 获取表的id
     * @return 表的id
     */
    public int getId() {
        return id;
    }

    /**
     * 获取原始的表名
     * @return 原始的表名
     */
    public String getName() {
        return name;
    }

    /**
     * 获取数据库表最新的版本号
     * @return 数据库表最新的版本号
     */
    public int getNewestVersion(){
        return newestVersion;
    }

    /**
     * 获取数据库表版本号所对应的散库id列表
     * @param version 数据库表版本号
     * @return 对应的散库id列表
     */
    public List<String> getDatabaseIdList(int version){
        return versionDbsMap.get(version);
    }

    /**
     * 获取数据库表版本号所对应的散表数量
     * @param version 数据库表版本号
     * @return 对应的散表的数量
     */
    public int getTableCount(int version){
        return versionTablesMap.get(version);
    }
}
